#ifndef STATUSUPDATEEVENT_HPP_
#define STATUSUPDATEEVENT_HPP_

#include <kit/event/Event.hpp>

namespace KitEvent
{
	/**
	 * This is a representation of status update event defined in the task. The
	 * event is identified by letter S, as I silently assumed that events incoming to
	 * the system are correct. For more precise explanation see Event class, as it is
	 * the base class of StatusUpdateEvent.
	 */
	class StatusUpdateEvent : public Event
	{
	public:
		StatusUpdateEvent():Event("S"){}
		StatusUpdateEvent(KitMessage::Message * iMessage):Event(iMessage, "S"){}
        virtual ~StatusUpdateEvent();
        virtual Event * makeCopy(KitMessage::Message * iMessage){return new StatusUpdateEvent(iMessage);}
        virtual void execute(KitUser::UserMap * iUsers);
        virtual bool isValid(KitUser::UserMap * iUsers);
	};
}

#endif /* STATUSUPDATEEVENT_HPP_ */
